diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-29 14:10:57 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-29 15:58:46 +0200 |
| commit | 585e28d49b853155c34a3eba03388722e2049cb7 (patch) | |
| tree | 92efed21fe58b812de7c7f83dc373d9594e1734c /apps/web/src/app/changelog/[version]/page.tsx | |
| parent | 1261e663e1bbb950e4efc8927ca4b068e0946bae (diff) | |
| download | opencut-585e28d49b853155c34a3eba03388722e2049cb7.tar.gz | |
feat: add published status to changelog entries
Diffstat (limited to 'apps/web/src/app/changelog/[version]/page.tsx')
| -rw-r--r-- | apps/web/src/app/changelog/[version]/page.tsx | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/apps/web/src/app/changelog/[version]/page.tsx b/apps/web/src/app/changelog/[version]/page.tsx index a3647fbd..522f454a 100644 --- a/apps/web/src/app/changelog/[version]/page.tsx +++ b/apps/web/src/app/changelog/[version]/page.tsx @@ -2,9 +2,8 @@ import type { Metadata } from "next"; import Link from "next/link";
import { notFound } from "next/navigation";
import { BasePage } from "@/app/base-page";
-import { allChangelogs } from "content-collections";
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
-import { getSortedReleases } from "../utils";
+import { getReleaseByVersion, getSortedReleases } from "../utils";
import {
ReleaseArticle,
ReleaseMeta,
@@ -17,12 +16,12 @@ import { CopyMarkdownButton } from "../components/copy-markdown-button"; type Props = { params: Promise<{ version: string }> };
export async function generateStaticParams() {
- return allChangelogs.map((r) => ({ version: r.version }));
+ return getSortedReleases().map((release) => ({ version: release.version }));
}
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { version } = await params;
- const release = allChangelogs.find((r) => r.version === version);
+ const release = getReleaseByVersion({ version });
if (!release) return {};
return {
title: `${release.title} (${release.version}) - OpenCut Changelog`,
@@ -33,10 +32,8 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> { export default async function ReleaseDetailPage({ params }: Props) {
const { version } = await params;
const releases = getSortedReleases();
- const index = releases.findIndex((r) => r.version === version);
-
+ const index = releases.findIndex((entry) => entry.version === version);
if (index === -1) notFound();
-
const release = releases[index];
const newer = index > 0 ? releases[index - 1] : null;
const older = index < releases.length - 1 ? releases[index + 1] : null;
@@ -52,20 +49,20 @@ export default async function ReleaseDetailPage({ params }: Props) { All releases
</Link>
- <ReleaseArticle variant="detail">
- <div className="flex flex-col gap-4">
- <div className="flex items-center justify-between">
- <ReleaseMeta release={release} />
- <CopyMarkdownButton
- description={release.description}
- changes={release.changes}
- />
+ <ReleaseArticle variant="detail">
+ <div className="flex flex-col gap-4">
+ <div className="flex items-center justify-between">
+ <ReleaseMeta release={release} />
+ <CopyMarkdownButton
+ description={release.description}
+ changes={release.changes}
+ />
+ </div>
+ <ReleaseTitle as="h1">{release.title}</ReleaseTitle>
+ {release.description && (
+ <ReleaseDescription>{release.description}</ReleaseDescription>
+ )}
</div>
- <ReleaseTitle as="h1">{release.title}</ReleaseTitle>
- {release.description && (
- <ReleaseDescription>{release.description}</ReleaseDescription>
- )}
- </div>
<ReleaseChanges release={release} />
</ReleaseArticle>
|
